iT邦幫忙

2026 iThome 鐵人賽

DAY 2
0
Claude AI

Claude Code 實戰筆記:AI coding 沒有新問題系列 第 2

# Day 2:AI 不會在猜的時候告訴你它在猜

  • 分享至 

  • xImage
  •  

0.1 + 0.2 ≠ 0.3

在幾乎所有程式語言裡,0.1 + 0.2 的結果是 0.30000000000000004。

這不是 bug,是 IEEE 754 浮點數規格的結構性限制。系統給你一個看起來正確的數字,不報錯,不 warning,但精確值是偏的。不知道要用 Decimal 的人寫金融計算,帳就會對不起來 — 不是程式壞了,是系統正常運作的輸出本身就帶著誤差。

工程師把這類問題叫 silent failure:不 crash、不報錯、結果是錯的。LLM 的 hallucination 大概是 2026 年軟體開發裡最普遍的 silent failure 之一。

Token 的機率跟事實無關

LLM 產生文字的方式是 next-token prediction — 根據前面所有 token 形成的機率分佈,從中抽出下一個 token,一個接一個。

這個機制有一個結構性的問題:「自信」在這裡代表的是機率分佈的集中程度 — 某個 token 被選中的機率遠高於其他候選人。但這個集中度不是事實正確性的可靠指標。一個不存在的函式名稱,如果語法上符合慣例、語意上看起來合理,就能拿到很高的機率。

RLHF 訓練讓這個問題更嚴重。模型在訓練過程中學到一件事:比起說「我不確定」,直接給一個聽起來自信的答案會拿到更高的 reward。有人用 bluffing 來形容這個副作用 — RLHF 的目的是讓模型更有用,但附帶的結果是模型學會了「說得像對的」比「承認不確定」更容易拿高分。

結果就是:沒辦法從 AI 的語氣判斷它是「知道答案」還是「在猜」。兩者的輸出長一模一樣。

四種壞法,第二種最毒

FutureAGI 2026 年的框架把 hallucination 分成四類,每類的危險程度不一樣:

事實性幻覺(Factual) — 生成不存在的東西。一個虛構的函式名稱、一個從來沒發過的論文、一個不存在的 API endpoint。這種最容易抓,查一下就知道有沒有。

推理性幻覺(Reasoning) — 每個步驟看起來都對,但推理鏈斷了。AI 正確地識別了問題,正確地選擇了演算法,但套用的時候搞錯了邊界條件。前提對、結論錯,而且每一行 code 個別看都合理,串起來行為是錯的。

脈絡偏離(Grounding) — AI 拿到了你給的 context,卻生出跟 context 矛盾的東西。你貼了一段 PostgreSQL 的 code 請它改,它回你 MySQL 語法。你的 spec 寫 async/await,它用 callback。明明資訊就在 prompt 裡,它就是沒用。

引用性幻覺(Citation) — 更常見的是整個來源都是虛構的,但更陰險的變體是:引用了真實存在的來源,卻偷改了內容。你去查來源,發現確實存在,就傾向相信引用的細節也是對的。但它可能改了版本號、改了函式簽名、改了一個關鍵參數。

四種裡面,推理性幻覺對寫程式的人殺傷力最大。它不會被 linter 抓到、不會讓 typecheck 變紅、甚至可能通過 unit test。通過了所有自動化檢查,但行為是錯的。

跟 IEEE 754 一模一樣 — 系統沒壞,輸出看起來正常,但結果就是偏的。所以問 AI「你確定嗎?」不是驗證,它會用同樣自信的語氣回「確定」,因為 bluffing 就是它被訓練出來的行為。驗證必須在 AI 外部發生:跑測試、查文件、讓另一個獨立機制交叉比對。會 silent fail 的系統,答案永遠在系統外面。


延伸閱讀


上一篇
# Day 1:你餵給 AI 的 Context,有 70% 是雜訊
下一篇
# Day 3:Anthropic 砍掉 80% 的 AI 指令,效果沒變差
系列文
Claude Code 實戰筆記:AI coding 沒有新問題9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言